﻿using System.Collections.Generic;
using Sustainalytics.Entities;
using System.Security.Claims;

namespace Sustainalytics.Claims
{
    public interface IOperationClaimsRetriever
    {
        void AddClaims(Entities.Claims claims);

        void AddResourceMap(List<ResourceMap> map);

        void AddUserClaims(List<UserClaim> claims);

        void DeleteResourceMap(ResourceMap map);

        void DeleteUserClaims(Account account, List<Claim> claims);

        void DeleteUser(Account account);

        IEnumerable<Claim> GetClaims(Resource resource, string verb, List<ResourceParameters> parameters);

        IEnumerable<Claim> GetUserClaims(Account acc);

        IEnumerable<ResourceMap> GetAllResourceMaps();

        IEnumerable<ClaimMap> GetAllClaimMaps();

        IEnumerable<Claim> GetPermissionClaims(string permissionName);

        IEnumerable<ResourceMap> GetUIResources(List<Claim> claims);

        void ClearMemoryCache();
    }
}
